package com.chen.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.chen.domain.User;
import com.chen.dto.UserDto;
import com.chen.model.GoogleVo;
import com.chen.model.UnsetPayPasswordVo;
import com.chen.model.UpdateLoginVo;
import com.chen.model.UpdateUserMobileVo;

import javax.xml.bind.ValidationException;
import java.util.List;
import java.util.Map;

public interface UserService extends IService<User> {


    /**
     * 查询用户的邀请关系
     *
     * @param page
     * @param userId
     * @return
     */
    Page<User> findDirectInvitePage(Page<User> page, Long userId);

    /**
     * 获取用户的认证状态
     *
     * @param id
     * @param authStatus
     * @param authCode
     * @param remark
     */
    void authsStatus(String id, String authStatus, String authCode, String remark);


    /**
     * 初级实名认证
     *
     * @param user
     * @throws ValidationException
     */
    void authAccount(User user) throws ValidationException;

    /**
     * 高级实名认证
     *
     * @param imgas
     */
    void authUser(String[] imgas);

    /**
     * 更新用户手机号
     *
     * @param updateUserMobileVo
     */
    void updatePhone(UpdateUserMobileVo updateUserMobileVo);

    /**
     * 修改用户名的登录密码
     *
     * @param updateLoginVo
     */
    void updateLoginPassword(UpdateLoginVo updateLoginVo);

    /**
     * 修改交易密码
     *
     * @param updateLoginVo
     */
    void updateUserPayPwd(UpdateLoginVo updateLoginVo);

    /**
     * 重置交易密码
     *
     * @param unsetPayPasswordVo
     */
    void unsetPayPassword(UnsetPayPasswordVo unsetPayPasswordVo);

    /**
     * 远程调用member获取用户信息
     *
     * @param ids
     * @return
     */
    Map<Long, UserDto> getUser(List<Long> ids,String username,String mobile,Long page,Long size);

    /**
     * 用户注册接口
     *
     * @param user
     */
    void register(User user) throws ValidationException;

    /**
     * 谷歌验证码
     *
     * @param googleVo
     */
    void gaVerify(GoogleVo googleVo);

    /**
     * 关闭谷歌验证码
     *
     * @param googleVo
     */
    void gaCancel(GoogleVo googleVo);
}
